const fs = require('fs')

class readFileLine {

  configPath = "./src/core/config/configure.config.ts";
  lineLength = 0;
  textArr = [];
  lineBuffer = new Buffer(4096);

  getFileList() {
    this.text = fs.createReadStream(this.configPath)
    return new Promise((s, e) => {
      this.textArr = [];
      let status = false
      this.text.on('data', (data) => {
        for (var i = 0; i < data.length; i++) {
          if (data[i] == 10 || data[i] == 13) {
            if (data[i] == 10) {
              try {
                var line = this.lineBuffer.slice(0, this.lineLength);
                if (line.length != 0) {
                  let str = line.toString('utf8')
                    .replace(/^\s+|\s+$/g, '')
                    .replace(/\'/g, "")
                    .replace(/,/g, "")

                  if (str.includes("start -")) {
                    status = true
                    continue;
                  }
                  if (str.includes("end -")) {
                    status = false
                    break;
                  }

                  if (status) {
                    this.textArr.push(str);
                  }
                }
              } finally {
                this.lineLength = 0;
              }
            }
          } else {
            this.lineBuffer[this.lineLength] = data[i];
            this.lineLength++;
          }
        }

        s(this.textArr)
      })
    })
  }
}

module.exports = new readFileLine();